package com.cashbox.modelos.inventario;

import com.cashbox.modelos.BaseModel;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import org.hibernate.jsr303.tck.tests.xmlconfiguration.constraintdefinition.Length;


/**
 *
 * @author Luis Antonio Ramirez Martinez
 */
@Entity
@Table(name = "tbl_marcas")
@NamedQueries({
    @NamedQuery(name = "Marca.findAll", query = "SELECT m FROM Marca m"),
    @NamedQuery(name = "Marca.findById", query = "SELECT m FROM Marca m WHERE m.id = :id")
})
public class Marca extends BaseModel implements Serializable {

    public static final String PROP_ID = "id";
    public static final String PROP_CLAVE = "clave";
    public static final String PROP_DESCRIPCION = "descripcion";
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "IdMarca")
    private Long id;
    @Column(name = "Clave")
    @Length(min = 3, max = 8)
    private String clave;
    @Length(min = 3, max = 80)
    @Column(name = "Descripcion")
    private String descripcion;

    public Marca() {
    
    }

    public Marca(Long id, String clave, String descripcion) {
        this.id = id;
        this.clave = clave;
        this.descripcion = descripcion;
    }

    /**
     * Regresa el Valor de la LLave de Identidad del Objeto.
     *
     * @return el valor del id.
     */
    public Long getId() {
        return id;
    }

    /**
     * Cambia el Valor de la Llave de Identidad del Objeto.
     *
     * @param id Nuevo Valor de la Propiedad Id.
     */
    public void setId(Long id) {
        Long oldId = this.id;
        this.id = id;
        propertyChangeSupport.firePropertyChange(PROP_ID, oldId, id);
    }

    /**
     * Regresa el Valor de la Clave de la Marca.
     *
     * @return la clave de la marca.
     */
    public String getClave() {
        return clave;
    }

    /**
     * Cambia el Valor de la Clave de la Marca.
     *
     * @param clave Nueva Clave de la Marca.
     */
    public void setClave(String clave) {
        this.clave = clave;
    }

    /**
     * Regresa el Valor de la Descripcion de la Marca
     *
     * @return la descripcion
     */
    public String getDescripcion() {
        return descripcion;
    }

    /**
     * Cambia el Valor de la Descripcion de la Marca
     *
     * @param descripcion la Nueva Descripcion de la Marca
     */
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }
    private transient final PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.removePropertyChangeListener(listener);
    }

    @Override
    public String toString() {
        return this.descripcion;
    }
    
    
}
